package com.mida.bms.report.service;

import com.mida.bms.report.entity.DocStructReport;
import com.mida.bms.report.vo.*;
import com.mida.tool.common.result.ActionResult;
import com.mida.tool.common.result.ListResult;

import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;
import java.util.Map;

/**
 * <h1>报告书写</h1>
 * <p>
 *
 * </p>
 *
 * @author jian.li on 2021/4/28 9:21
 */
public interface DocReportService {

    ListResult<ReportResult> saveTemporarily(DocReportPreservationRequest request);


    void requestCheck(DocReportPreservationRequest request);

    ListResult<String> saveDocReport(DocReportPreservationRequest request);

    ListResult<ReportResult> getDocReport(DocReportInitializationRequest request);

    ActionResult editDocReport(Long stReportSoid, Long employeeSoid);

    ActionResult saveTemplate(DocReportPreservationRequest request);

    ActionResult modifyReportStatus(DocReportPreservationRequest reportRequest);

    ActionResult modifyStatus(String stReportSoid, Long employeeSoid);

    ActionResult withdrawStatus(String stReportSoid, Long employeeSoid);

    ActionResult saveStructuredReport(StructuredReportRequest request);

//    ActionResult saveDocReportByRegistrationAndExam(DocReportPreservationRequest request);

    ListResult<ReportResult> getDocReportByTypes(DocReportInitializationRequest request);

//    ActionResult saveTemporarilyTypes(DocReportPreservationRequest request);

    List<DocReportRequisitionRelationVo> selectByStReportSoid(Long stReportSoid);

    ListResult<StatusSum> queryReportsNumbers(QueryReportsNumberDto queryReportsNumberDto);

    ActionResult publishReport(ReportPublishRequest reportPublishRequest);

    ActionResult recallReport(ReportRecallRequest reportRecallRequest);

    ActionResult postponeReport(String requestSoid, String personSoid, String registrationFormSoid);

    ListResult<ReportResult> getDocReportByStReportSoid(Long stReportSoid);

    DocStructReport gainDocReportByStReportSoid(Long stReportSoid) throws Exception;
}
